import chart_studio
chart_studio.tools.set_credentials_file(username='mmendoza17', api_key='LY05z8X9UpGnqlzIa5QG')
import plotly.io as pio
pio.renderers.default = "notebook+pdf"
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import chart_studio.plotly as py
import plotly.graph_objects as go
import numpy as np
%matplotlib inline
#read in data
propesca_nacional=pd.read_csv('subsidios_permisos/B3_propesca.csv')
bienpesca_nacional=pd.read_csv('subsidios_permisos/bienpesca_2020.csv')
permisos_nacional=pd.read_csv('subsidios_permisos/Permisos_base_completa.csv')
propesca_update=pd.read_csv('subsidios_permisos/PROPESCA.csv')
propesca_update.head()
print(propesca_update.columns)
estados=propesca_update['Nombre Estado'].value_counts().index
print(estados)
# lista de regiones pesqueras
regiones_dic={}
# make dictionary of lists
regiones_dic['Pacifico_Norte']=['BAJA CALIFORNIA','BAJA CALIFORNIA SUR', 'SONORA', 'SINALOA', 'NAYARIT' ]
regiones_dic['Pafico_Sur']=['JALISCO', 'COLIMA', 'MICHOACAN', 'GUERRERO', 'OAXACA', 'CHIAPAS']
regiones_dic['Golfo_Caribe']=['TAMAULIPAS','TABASCO','VERACRUZ', 'CAMPECHE', 'YUCATAN', 'QUINTANA ROO']
#aguas_cont=
for region, est_values in regiones_dic.items(): # exclusion de estados
# check which of value counts is not in this list
print(est_values)
estados = [ele for ele in estados if ele not in est_values]
#print(estados)
regiones_dic['Aguas_Continentales']= estados
print(bienpesca_nacional['Entidad'].value_counts())
print(propesca_update['Nombre Estado'].value_counts())
bienpesca_estados_sobrantes= ['Aguascalientes','Ciudad de México','México', 'Nuevo León'] # no se encuentran en datos de PROPESCA
bienpesca_estados=sorted(bienpesca_nacional['Entidad'].value_counts().index)
bienpesca_estados=[ele for ele in bienpesca_estados if ele not in bienpesca_estados_sobrantes]
print(bienpesca_estados)
propesca_estados=sorted(propesca_update['Nombre Estado'].value_counts().index)
print(propesca_estados)
entidades_mapa = dict(zip(bienpesca_estados, propesca_estados))
print(entidades_mapa)
#THIS DOES THE REPLACEMENT ONCE SO THE STATES MATCH
bienpesca_nacional.replace({'Entidad' : entidades_mapa}, inplace=True )
#filter for region
#TO DO: key mapping estados BIENPESCA Y PROPESCA
#APROBADOS VS NO APROBADOS POR REGION
for region, est_values in regiones_dic.items():
#filter for region
propesca_region= propesca_update[propesca_update['Nombre Estado'].isin(est_values)]
# aprobados vs no aprobados
print(propesca_region['Estatus'].value_counts())
fig =px.histogram(propesca_region, x="Nombre Estado", color="Estatus", title='Registros Propesca en ' + region).update_xaxes(categoryorder='total descending')
fig.show()
#filter by aprobados
aprobados= propesca_update[propesca_update['Estatus']=='APROBADO']
no_aprobados=propesca_update[propesca_update['Estatus']=='NO APROBADO']
print(aprobados)
#sunburst de regiones donde se encuentran beneficiarios aprobados unicos***
for region, est_values in regiones_dic.items():
#filter for region
propesca_region= aprobados[aprobados['Nombre Estado'].isin(est_values)]
ben_unicos=propesca_region.drop_duplicates(subset=['Nombre del Beneficiario o Razon Social', 'Nombre Localidad'], keep='last')
#sunburst de regiones
region=ben_unicos.groupby(by=['Nombre Estado', 'Nombre Municipio', 'Nombre Localidad']).count()[["Pesqueria"]].rename(columns={"Pesqueria":"count"})
region.reset_index(inplace=True)
fig = px.sunburst(region,
path=['Nombre Estado', 'Nombre Municipio', 'Nombre Localidad'],
values='count',
title="PROPESCA regiones",
width=750, height=750)
fig.show()
#numero de beneficiarios unicos y distribucion de num de anios que han recibido propesca
#ben_unicos_count= propesca.groupby(by=['beneficiario', 'localidad']).size().reset_index().rename(columns={0:'count'})
#sunburst de distribucion de genero ***
#sunburst de distribucion de genero ***
#initialize empty df for regions
fem_ratios_PP = pd.DataFrame(columns = ['Nombre Estado', 'H', 'M', 'FemaleRatio', 'MaleRatio'])
fem_ratios_BP = pd.DataFrame(columns = ['Nombre Estado', 'H', 'M', 'FemaleRatio', 'MaleRatio'])
for region, est_values in regiones_dic.items():
print(region)
#filter for region
#APROBADOS FUE CAMBIADO DE NOMBRE ESTADO A ENTIDAD,
propesca_region= aprobados[aprobados['Nombre Estado'].isin(est_values)]
ben_unicos=propesca_region.drop_duplicates(subset=['Nombre del Beneficiario o Razon Social', 'Nombre Localidad'], keep='last')
#ratio entre hombres y mujeres por entidad
#groupby entidad y genero and do a count on this
res=ben_unicos.pivot_table(index='Nombre Estado', columns='Genero', aggfunc='size', fill_value=0)
# calculate ratios
sums = res[['M', 'H']].sum(axis=1)
res['FemaleRatio'] = res['M'] / sums
res['MaleRatio'] = res['H'] / sums
res.reset_index(inplace=True)
print(res)
print(res.columns)
if (region== 'Aguas_Continentales'):
print('Skip aguas continentales')
else:
fem_ratios_PP=fem_ratios_PP.append(res, ignore_index=True)
fig = px.sunburst(ben_unicos,
path=['Genero','Nombre Estado'],
title="PROPESCA regiones sexo" + region,
width=750, height=750)
fig.show()
fig = px.bar(res, x='Nombre Estado', y=['MaleRatio', 'FemaleRatio'], title='Ratio Hombre Mujer PROPESCA' + region)
fig.show()
# ahora lo mismo pero para BIENPESCA
bienpesca_region= bienpesca_nacional[bienpesca_nacional['Entidad'].isin(est_values)]
res_BP=bienpesca_region.pivot_table(index='Entidad', columns='Sexo', aggfunc='size', fill_value=0)
print(res_BP)
# calculate ratios
sums = res_BP[['Femenino', 'Masculino']].sum(axis=1)
res_BP['FemaleRatio'] = res_BP['Femenino'] / sums
res_BP['MaleRatio'] = res_BP['Masculino'] / sums
res_BP.reset_index(inplace=True)
if (region== 'Aguas_Continentales'):
print('Skip aguas continentales')
else:
fem_ratios_BP=fem_ratios_BP.append(res_BP, ignore_index=True)
fig = px.bar(res_BP, x='Entidad', y=['MaleRatio', 'FemaleRatio'], title='Ratio Hombre Mujer BIENPESCA' + region)
fig.show()
# to do: guardar ratios de hombre o mujer ( append ) y graficar con un boxplot cuales son los outliers, etc.
print(fem_ratios_PP)
print(fem_ratios_BP)
fig = px.box(fem_ratios_PP, y="FemaleRatio", points="all" , hover_data= ['Nombre Estado'])
fig.show()
fig = px.box(fem_ratios_BP, y="FemaleRatio", points="all", hover_data= ['Entidad'])
fig.show()
#bosplot where dots are defined by states and we need female ratios (one column)
#Verificar si los datos nuevos y viejos coinciden
aprobados['beneficiario']=aprobados['Nombre del Beneficiario o Razon Social'].str.strip()
propesca_nacional["beneficiario"]=propesca_nacional["beneficiario"].str.strip()
print(propesca_nacional["beneficiario"])
print(aprobados['beneficiario'])
propesca_comp=pd.merge(propesca_nacional, aprobados, on='beneficiario', how='left')
print(propesca_comp.shape)
print(propesca_nacional.shape)
print(aprobados.shape)
#conteo por anio
print(propesca_nacional['año'].value_counts())
print(aprobados['Ejercicio'].value_counts())
#beneficiarios unicos
# look at specific entidad y localidad to see if the beneficiaries are the same
ben_unicos_count= propesca_nacional.groupby(by=['beneficiario', 'localidad']).size().reset_index().rename(columns={0:'count'})
print(ben_unicos_count)
ben_unicos2_count=aprobados.groupby(by=['beneficiario', 'Nombre Localidad']).size().reset_index().rename(columns={0:'count'})
print(ben_unicos2_count)
print(propesca_nacional['año'].value_counts())
print(aprobados['Ejercicio'].value_counts())
print(aprobados)
#conteo por anio
#filter for golfo de mexico
GM_estados=['TAMAULIPAS','TABASCO','VERACRUZ', 'CAMPECHE', 'YUCATAN']
propesca=propesca_nacional[propesca_nacional['entidad'].isin(GM_estados)]
gm_estados=['Tamaulipas','Tabasco','Veracruz de Ignacio de la Llave', 'Campeche', 'Yucatán'] #,'QUINTANA ROO']
bienpesca=bienpesca_nacional[bienpesca_nacional['Entidad'].isin(gm_estados)]
print(propesca.columns)
print(propesca.shape)
#numero de beneficiarios unicos y distribucion de num de anios que han recibido propesca
ben_unicos_count= propesca.groupby(by=['beneficiario', 'localidad']).size().reset_index().rename(columns={0:'count'})
print(ben_unicos_count)
#beneficiarios que recibieron PROPESCA por 2 anios o mas
print('Beneficiarios que recibieron beneficios por 2 años o mas')
propesca['count']= propesca.groupby(by=['beneficiario', 'localidad'])['año'].transform('count')
propesca['comp_ids']= propesca.groupby(by=['beneficiario', 'localidad']).grouper.group_info[0]
#beneficiarios que recibieron PROPESCA por 2 anios o mas
ben_anios_multiples= propesca[propesca['count']>=2]
ben_unsoloanio= propesca[propesca['count']==1]
print(ben_anios_multiples)
ben_unicos=propesca.drop_duplicates(subset=['beneficiario', 'localidad'], keep='last')
print(ben_unicos)
#distribucion de numero de anios de subsidios por beneficiario, (excluyente)
fig = px.histogram(ben_unicos_count, x="count", title='Distribucion de numero de años de subsidio por beneficiario')
fig.show()
url=py.iplot(fig, filename='PROPESCAyeardistributionperperson')
# # distribucion de beneficio por anio unicamente incluyendo beneficiarios que obtuvieron beneficio 2 veces o mas
# fig=px.histogram(ben_anios_multiples, x='año', color='entidad', title='Numero de Beneficios por año')
# fig.show()
# url=py.iplot(fig, filename='PROPESCAyeardistributionmultiplesanios')
# #distribucion de beneficio por anio unicamente incluyendo beneficiarios que obtuvieron beneficio una vez solamente
# fig=px.histogram(ben_unsoloanio, x='año', color='entidad', title='Numero de Beneficios por año')
# fig.show()
# url=py.iplot(fig, filename='PROPESCAyeardistributionsolounanio')
#distribucion de beneficios por año y por entidad
fig=px.histogram(propesca, x='año', color='entidad', title='Numero de Beneficios por año')
fig.show()
url=py.iplot(fig, filename='PROPESCAyeardistributiontotal')
##add BIENPESCA AS A 2020 COLUMN
bienpesca['año']=2020
bienpesca['entidad']=bienpesca['Entidad'] #copy of this to replace later
bienpesca.replace({'entidad' : { 'Tamaulipas':'TAMAULIPAS','Tabasco':'TABASCO','Veracruz de Ignacio de la Llave':'VERACRUZ', 'Campeche':'CAMPECHE', 'Yucatán':'YUCATAN'}}, inplace=True)
print(bienpesca.shape)
print(propesca.shape)
print('Merging dataframes')
union_propesca_bienpesca=propesca.merge(bienpesca[['entidad','año']], on=['año','entidad'], how='outer') # need entidad and anio and merge them
print(union_propesca_bienpesca.shape)
#PROPESCA Y BIENPESCA EN AÑOS
fig=px.histogram(union_propesca_bienpesca, x='año', color='entidad', title='Numero de Beneficios por año')
fig.show()
#url=py.iplot(fig, filename='PROPESCAMASBIENPESCAyeardistributiontotal')
#donde estan estos pescadores (unicos) ? sunburst de regiones
region=ben_unicos.groupby(by=['entidad', 'municipio', 'localidad']).count()[["zona"]].rename(columns={"zona":"count"})
print(region)
region.reset_index(inplace=True)
fig = px.sunburst(region,
path=["entidad", "municipio", "localidad"],
values='count',
title="PROPESCA regiones",
width=750, height=750)
fig.show()
url=py.iplot(fig, filename='PROPESCAregiones')
region=bienpesca.groupby(by=['Entidad']).count()[["Monto"]].rename(columns={"Monto":"count"})
print(region)
region.reset_index(inplace=True)
fig = px.sunburst(region,
path=["Entidad"],
values='count',
title="BIENPESCA regiones",
width=750, height=750)
fig.show()
url=py.iplot(fig, filename='BIENPESCAregiones')
#distribucion de sexo en pescadores unicos
fig = px.sunburst(ben_unicos,
path=["sexo", "entidad"],
values='monto_conapesca',
title="PROPESCA distributcion genero",
width=750, height=750)
fig.show()
url=py.iplot(fig, filename='PROPESCAgenero')
fig = px.sunburst(bienpesca_nacional,
path=["Sexo"],
values='Monto',
title="BIENPESCA Nacional distributcion genero",
width=750, height=750)
fig.show()
url=py.iplot(fig, filename='BIENPESCAgeneronacional')
fig = px.sunburst(bienpesca,
path=["Sexo", 'Entidad'],
values='Monto',
title="BIENPESCA GDM distributcion genero",
width=750, height=750)
fig.show()
url=py.iplot(fig, filename='BIENPESCAgeneroGDM')
#como cruzar con numero de permisos en esos anios... nacional vs golfo de mexico , rnpa
#enfocarse en la laguna de terminos. checar numero de permisos vs bienpesca? sabancuy , isla aguada, cd del carmen
import plotly.figure_factory as ff
print(ben_unicos['sexo'].value_counts())
print(propesca_nacional['sexo'].value_counts())
print(bienpesca['Sexo'].value_counts())
print(bienpesca_nacional['Sexo'].value_counts())
print(bienpesca_nacional['Monto'].value_counts())
aprobados= propesca_update[propesca_update['Estatus']=='APROBADO']
aprobados.head()
print(aprobados.columns)
print(aprobados['Fecha de Inicio'])
print(aprobados['Fecha Termino'])
# make anio column with the proper scheme .... ask this to Sara
# convert to datetime and make another column corresponding to the year
aprobados['Fecha de Inicio']=pd.to_datetime(aprobados['Fecha de Inicio'])
#print(propesca_update['Fecha de Inicio'])
aprobados['año']= pd.DatetimeIndex(aprobados['Fecha de Inicio']).year # retrieve just the year
bienpesca_nacional['año']=2020
print(aprobados['año'])
#restringir al GDM
# GM_estados=['TAMAULIPAS','TABASCO','VERACRUZ', 'CAMPECHE', 'YUCATAN']
# propesca_2=propesca_update[propesca_update['Nombre Estado'].isin(GM_estados)]
# print(propesca_2.shape)
#numero de beneficiarios unicos y distribucion de num de anios que han recibido propesca
ben_unicos_count2= aprobados.groupby(by=['Nombre del Beneficiario o Razon Social', 'Nombre Localidad']).size().reset_index().rename(columns={0:'count'})
#drop the ones where count >5
ben_unicos_count2=ben_unicos_count2[ben_unicos_count2['count']<=5]
print(ben_unicos_count2.shape)
print(ben_unicos_count.shape)
ben_unicos2=aprobados.drop_duplicates(subset=['Nombre del Beneficiario o Razon Social', 'Nombre Localidad'], keep='last')
print(ben_unicos2)
fig = px.histogram(ben_unicos_count2, x="count", title='Distribucion de numero de años de subsidio por beneficiario')
fig.show()
url=py.iplot(fig, filename='PROPESCA2nacionalanios')
#distribucion de beneficios por año y por entidad
fig=px.histogram(aprobados, x='año', color='Nombre Estado', title='Numero de Beneficios por año')
fig.show()
#BIENPESCA UNION
# todo propesca_2. # change column name Nombre Estado to entidad
aprobados_copy=aprobados.rename(columns={'Nombre Estado':'Entidad'}, inplace=False)
bienpesca_nacional.replace({'Entidad' : entidades_mapa}, inplace=True ) # not needed here, but ran up top
print(bienpesca_nacional['Entidad'])
union_propesca_bienpesca2=aprobados_copy.merge(bienpesca_nacional[['Entidad','año']], on=['año','Entidad'], how='outer') # need entidad and anio and merge them
#clean NaN values
union_propesca_bienpesca2.dropna(subset=['Entidad'], inplace=True)
print(union_propesca_bienpesca2.shape)
fig=px.histogram(union_propesca_bienpesca2, x='año', color='Entidad', title='Numero de Beneficios por año')
fig.show()
#ahora por regiones
for region, est_values in regiones_dic.items(): #No incluira los estados restantes de BIENPESCA....
#filter for region
datos_region= union_propesca_bienpesca2[union_propesca_bienpesca2['Entidad'].isin(est_values)]
fig=px.histogram(datos_region, x='año', color='Entidad', title='Numero de Beneficios por año')
fig.show()
def interval_overlaps(a_pair, b_start, b_end ): #checks for a time overlap
return min(a_pair[1], b_end) - max(a_pair[0], b_start) > np.timedelta64(-1)
permisos_nacional=pd.read_csv('subsidios_permisos/Permisos_base_completa.csv')
print(bienpesca_nacional['Entidad'].value_counts())
#print(permisos_nacional)
anios=pd.date_range(start=pd.datetime(2013,1,1), end=pd.datetime(2020,1,1), freq='Y') #pairs to compare start an end dates
print(anios)
shift=pd.to_timedelta([1,1, 1, 1, 1,1,1], unit='Y')
anios_end=anios+shift
anios_pair=list(zip(anios, anios_end))
print(anios_pair)
# how to construct a time series of permisos
# deal with date, standardize, index 26175 is where it starts being different, change latter dates to former dates
print(permisos_nacional.iloc[26172]) # last one t
print(permisos_nacional.iloc[26173]) # clean for this on
new_dates1=pd.to_datetime(permisos_nacional['fecha_inicio'][0:26173],format='%Y-%m-%d', errors='coerce')
new_dates2=pd.to_datetime(permisos_nacional['fecha_inicio'][26173:],format='%d/%m/%y', errors='coerce')
#concatenate dates
new_dates=pd.concat([new_dates1, new_dates2])
permisos_nacional['fecha_inicio']= new_dates
print(permisos_nacional['fecha_inicio']) # problem is that the column is not read as datetime yet
new_dates1= pd.to_datetime(permisos_nacional['fecha_final'][0:26173],format='%Y-%m-%d', errors='coerce')
new_dates2=pd.to_datetime(permisos_nacional['fecha_final'][26173:],format='%d/%m/%y', errors='coerce')
new_dates=pd.concat([new_dates1, new_dates2])
permisos_nacional['fecha_final']=new_dates
#'fecha_inicio', 'fecha_final'
print(permisos_nacional['fecha_final'])
#find which years from 2014 to 2020 overlap with each permit and make columns for years
for i,anio in enumerate(anios_pair):
print(anio[0])
print(anio[1])
#check if this year overlaps with fecha inicio and fecha final
year= str(2014+i)
#save result in another column named as the year
permisos_nacional[year]=permisos_nacional.apply(lambda x: interval_overlaps(anio, x['fecha_inicio'], x['fecha_final']), axis=1)
cols_to_print=['fecha_inicio', 'fecha_final', '2014', '2015', '2016', '2017' , '2018', '2019', '2020']
print(permisos_nacional[cols_to_print])
cols_to_keep= ['2014', '2015', '2016', '2017' , '2018', '2019', '2020', 'entidad', 'no_embarcaciones']
# make another dataframe with year and number of permits and state
# you can group by entidad and count number of years?
permisos_tiempo=permisos_nacional[cols_to_keep]
# brute force way to do this, probably a better way with groupby,
permisos_tiempo_vec=[ ]
for year in range(2014,2021):
#filter for True
print(year)
new_df= permisos_tiempo[permisos_tiempo[str(year)]==True]
new_df[str(year)]=year # switch all to that year
cols_to_keep=[str(year), 'entidad', 'no_embarcaciones']
new_df=new_df[cols_to_keep]
#rename col
#print(new_df)
new_df.rename(columns={str(year):'Year'}, inplace=True)
permisos_tiempo_vec.append(new_df)
permisos_final=pd.concat(permisos_tiempo_vec)
# barplot w x=year
print(permisos_final)
permisos_grp=permisos_final.groupby(['Year','entidad']).size().reset_index().rename(columns={0:'count'})
no_embarcaciones= permisos_final.groupby(['Year','entidad']).agg({'no_embarcaciones': ['count', 'sum']}).reset_index()
no_embarcaciones.columns = ['Year','entidad', 'count', 'sum']
print('permisos grouped by year and entidad')
print(permisos_grp)
print('permisos grouped by year and entidad, numero de embarcaciones')
print(no_embarcaciones)
#make different columns 2014 a 2020 and see number of active permits per entidad , plot bar charts about this x= year
fig = px.bar(permisos_grp, x='Year', y='count', color='entidad', title='Numero de permisos activos en el país por año')
fig.show()
url=py.iplot(fig, filename='Permisostimeseries')
#ahora mostrarr el numero de embarcaciones por estado
fig = px.bar(no_embarcaciones, x='Year', y='sum', color='entidad', title='Numero de embarcaciones en permisos activos en el país por año')
fig.show()
url=py.iplot(fig, filename='noembarcacionestimeseries')
#restringir al Golfo de Mexico
permisos_golfo=permisos_grp[permisos_grp['entidad'].isin(GM_estados)]
embarcaciones_golfo=no_embarcaciones[no_embarcaciones['entidad'].isin(GM_estados)]
fig = px.bar(permisos_golfo, x='Year', y='count', color='entidad', title='Numero de permisos activos en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='PermisostimeseriesGoM')
fig = px.bar(embarcaciones_golfo, x='Year', y='sum', color='entidad', title='Numero de embarcaciones en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='embarcacionesGoM')
# dividir monto y numero de beneficiarios por numero de embarcaciones
#merge dataframes / per year
print(embarcaciones_golfo)
print(union_propesca_bienpesca.columns)
#union propesca contains both number of beneficieries from propesca + bienpesca ,
#union propesca, group by entidad and use count , #rename columns to count
#print(union_propesca_bienpesca.groupby(['año','entidad']).count().reset_index().rename(columns={0:'count_benef'}, inplace=True))
count_propesca=union_propesca_bienpesca.groupby(['año','entidad']).size().reset_index().rename(columns={0:'count_benef'})
count_propesca2=union_propesca_bienpesca2.groupby(['año','entidad']).size().reset_index().rename(columns={0:'count_benef'})
#change column name
#print(count_propesca)
print(count_propesca2)
embarcaciones_golfo.rename(columns = {'Year': 'año'}, inplace=True)
print(embarcaciones_golfo)
# merge by anio and entidad
permisos_benef=embarcaciones_golfo.merge(count_propesca[['entidad','año', 'count_benef']], on=['año','entidad'], how='outer')
permisos_benef2=embarcaciones_golfo.merge(count_propesca2[['entidad','año', 'count_benef']], on=['año','entidad'], how='outer')
## Plot scatterplot of both x/y per year
permisos_benef['embarcaciones_div_benef']=permisos_benef['sum']/permisos_benef['count_benef']
permisos_benef['permisos_div_benef']= permisos_benef['count']/permisos_benef['count_benef']
permisos_benef['benef_div_embarcaciones']=permisos_benef['count_benef']/permisos_benef['sum']
permisos_benef['benef_div_permisos']= permisos_benef['count_benef']/permisos_benef['count']
permisos_benef2['embarcaciones_div_benef']=permisos_benef2['sum']/permisos_benef2['count_benef']
permisos_benef2['permisos_div_benef']= permisos_benef2['count']/permisos_benef2['count_benef']
permisos_benef2['benef_div_embarcaciones']=permisos_benef2['count_benef']/permisos_benef2['sum']
permisos_benef2['benef_div_permisos']= permisos_benef2['count_benef']/permisos_benef2['count']
print(permisos_benef2)
## Al reves
fig = px.bar(permisos_benef, x='año', y='benef_div_embarcaciones', color='entidad', barmode='group',title='Numero de beneficiarios por embarcaciones en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='benef_div_embarcaciones')
# correlacion, etc.
fig = px.bar(permisos_benef, x='año', y='benef_div_permisos', color='entidad',barmode='group', title='Numero de beneficiarios por permiso en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='benef_div_permisos')
# segunda parte
fig = px.bar(permisos_benef2, x='año', y='benef_div_embarcaciones', color='entidad', barmode='group',title='Numero de beneficiarios por embarcaciones en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='benef_div_embarcaciones2')
# correlacion, etc.
fig = px.bar(permisos_benef2, x='año', y='benef_div_permisos', color='entidad',barmode='group', title='Numero de beneficiarios por permiso en el Golfo de Mexico por año')
fig.show()
url=py.iplot(fig, filename='benef_div_permisos2')
no_embarcaciones.rename(columns = {'Year': 'año'}, inplace=True) #embarcaciones nacionales
incremento_nacional=pd.DataFrame(columns=['entidad','incremento_bde','incremento_bdp', 'incremento_raw'] )
for region, est_values in regiones_dic.items(): #No incluira los estados restantes de BIENPESCA....
#filter for region
benef_region= union_propesca_bienpesca2[union_propesca_bienpesca2['Entidad'].isin(est_values)]
count_propesca2=benef_region.groupby(['año','Entidad']).size().reset_index().rename(columns={0:'count_benef'})
embarcaciones_region= no_embarcaciones[no_embarcaciones['entidad'].isin(est_values)]
# change entidad name
embarcaciones_region.rename(columns = {'entidad': 'Entidad'}, inplace=True)
# merge data
permisos_benef_region=embarcaciones_region.merge(count_propesca2[['Entidad','año', 'count_benef']], on=['año','Entidad'], how='outer')
# calculate ratios
permisos_benef_region['benef_div_embarcaciones']=permisos_benef_region['count_benef']/permisos_benef_region['sum']
permisos_benef_region['benef_div_permisos']= permisos_benef_region['count_benef']/permisos_benef_region['count']
#
if(region=='Aguas_Continentales'):
print('Skipping Aguas Continentales')
else:
count_2019= permisos_benef_region[permisos_benef_region['año']==2019].reset_index()
count_2020= permisos_benef_region[permisos_benef_region['año']==2020].reset_index()
print(count_2019)
print(count_2020)
incremento=pd.DataFrame()
incremento['entidad']= count_2020['Entidad'] # estado
incremento['incremento_bde']=count_2020['benef_div_embarcaciones']/count_2019['benef_div_embarcaciones']
incremento['incremento_bdp']=count_2020['benef_div_permisos']/count_2019['benef_div_permisos']
incremento['incremento_raw']=count_2020['count_benef']/count_2019['count_benef']
incremento['incremento_cambiorel']=(count_2020['count_benef']- count_2019['count_benef'])/ count_2019['count_benef']
incremento['incremento_difrel']=(count_2020['count_benef']- count_2019['count_benef'])/ ((count_2019['count_benef'] + count_2020['count_benef'])/2)
#merge
incremento_nacional= incremento_nacional.append(incremento, ignore_index=True)
#plot
fig = px.bar(permisos_benef_region, x='año', y='benef_div_embarcaciones', color='Entidad', barmode='group',title='Numero de beneficiarios por embarcaciones por año')
fig.show()
# correlacion, etc.
fig = px.bar(permisos_benef_region, x='año', y='benef_div_permisos', color='Entidad',barmode='group', title='Numero de beneficiarios por permiso por año')
fig.show()
### incremento del 2019 al 2020
print(incremento_nacional)
#boxplot
fig = px.box(incremento_nacional, y="incremento_bde", points="all", hover_data= ['entidad'])
fig.show()
fig = px.box(incremento_nacional, y="incremento_bdp", points="all", hover_data= ['entidad'])
fig.show()
fig = px.box(incremento_nacional, y="incremento_raw", points="all", hover_data= ['entidad'])
fig.show()
fig = px.box(incremento_nacional, y="incremento_cambiorel", points="all", hover_data= ['entidad'])
fig.show()
fig = px.box(incremento_nacional, y="incremento_difrel", points="all", hover_data= ['entidad'])
fig.show()
print(propesca.columns)
sociedades_unicas=propesca['unidadeconmica'].unique()
print(propesca.shape)
print(len(sociedades_unicas))
#print(sociedades_unicas)
#print(*sociedades_unicas, sep='\n')
#generar filtros
#count the number of times these strings appear in sociedades unicas, you can make it a df w a column, or just treat as strings
#SC DE RL DE CV
sociedades_scrlcv=sum('SC DE RL DE CV' in s for s in sociedades_unicas) #after this you will have to take these out to
print(sociedades_scrlcv)
sociedades_menosSCRLCV= [x for x in sociedades_unicas if not 'SC DE RL DE CV' in x]
#print(*sociedades_menosSCRLCV, sep='\n')
#SA DE CV
sociedades_sadecv=sum('SA DE CV' in s for s in sociedades_unicas)
print(sociedades_sadecv)
sociedades_menos= [x for x in sociedades_menosSCRLCV if not 'SA DE CV' in x]
#SC DE RL
sociedades_scderl=sum('SC DE RL' in s for s in sociedades_menosSCRLCV)
sociedades_menos= [x for x in sociedades_menos if not 'SC DE RL' in x]
print(sociedades_scderl)
#SCL , Sociedad de Cooperativa Limitada
sociedades_SCL=sum('SCL' in s for s in sociedades_unicas)
sociedades_menos= [x for x in sociedades_menos if not 'SCL' in x]
print(sociedades_SCL)
#SSS, Sociedades de Solidaridad Social
sociedades_SSS=sum('SSS' in s for s in sociedades_unicas)
sociedades_menos= [x for x in sociedades_menos if not 'SSS' in x]
print(sociedades_SSS)
#SCPP, Sociedades Cooperativas de Producción Pesquera (SCPP)
sociedades_SCPP= sum('SCPP' in s for s in sociedades_unicas)
sociedades_menos= [x for x in sociedades_menos if not 'SCPP' in x]
print(sociedades_SCPP)
#individuales
print(*sociedades_menos, sep='\n')
print(len(sociedades_menos))
#'srl de cv'
#'sc'
#'scrl de cv'
print(union_propesca_bienpesca['año'])
# por regiones de pesca, tipo de pesca, etc.
print(propesca_update['año'].value_counts())
print(propesca_update['Genero'].value_counts())
print(propesca_update['Nombre Estado'].value_counts())
# restringir al GdM
print(ben_unicos_count2.dtypes)
print(ben_unicos_count2['Nombre del Beneficiario o Razon Social'].value_counts().sort_values())
test=propesca_update[propesca_update.duplicated()]
print(propesca_update.duplicated())
print(test)
print(ben_unicos['sexo'].value_counts())
a= [1, 2, 2,2]
b=[2, 2 ,2, 2]
c=[2, 4 ,4, 4]
data_test= pd.DataFrame(list(zip(a,b,c)) )
print(data_test)
print(data_test.duplicated())
print(data_test[data_test.duplicated()][0].value_counts())
print(union_propesca_bienpesca2['Entidad'].value_counts(dropna=False))
print(union_propesca_bienpesca2['año'].value_counts(dropna=False))
union_propesca_bienpesca2.head()